// vite.config.ts
import { resolve } from "node:path";
import * as process from "node:process";
import { fileURLToPath } from "node:url";
import { loadEnv } from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/vite@5.1.6_@types+node@20.11.26_less@4.2.0/node_modules/vite/dist/node/index.js";

// plugins/index.ts
import vue from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/@vitejs+plugin-vue@5.0.4_vite@5.1.6_vue@3.4.21/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import vueJsx from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/@vitejs+plugin-vue-jsx@3.1.0_vite@5.1.6_vue@3.4.21/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
import AutoImport from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/unplugin-auto-import@0.16.7_@vueuse+core@10.9.0/node_modules/unplugin-auto-import/dist/vite.js";
import GenerateConfig from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/unplugin-config@0.1.4_esbuild@0.20.1_vite@5.1.6/node_modules/unplugin-config/dist/vite.js";
import Components from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/unplugin-vue-components@0.26.0_vue@3.4.21/node_modules/unplugin-vue-components/dist/vite.js";
import VitePluginPreloadAll from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/@mistjs+vite-plugin-preload@0.0.1_vite@5.1.6/node_modules/@mistjs/vite-plugin-preload/dist/index.mjs";
import Unocss from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/unocss@0.57.7_postcss@8.4.35_vite@5.1.6/node_modules/unocss/dist/vite.mjs";
import AntdvResolver from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/antdv-component-resolver@1.0.7_unplugin-vue-components@0.26.0/node_modules/antdv-component-resolver/dist/index.mjs";

// plugins/constants.ts
var GLOB_CONFIG_FILE_NAME = "_app.config.js";
var OUTPUT_DIR = "dist";

// plugins/vite-build-info.ts
import { readdir, stat } from "node:fs";
import dayjs from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/dayjs.min.js";
import duration from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/duration.js";
import pkg from "file:///D:/work/vs_program/antdv-pro-main/node_modules/.pnpm/picocolors@1.0.0/node_modules/picocolors/picocolors.js";
var { green, blue, bold } = pkg;
dayjs.extend(duration);
var fileListTotal = [];
function recursiveDirectory(folder, callback) {
  readdir(folder, (err, files) => {
    if (err)
      throw err;
    let count = 0;
    const checkEnd = () => {
      ++count === files.length && callback();
    };
    files.forEach((item) => {
      stat(`${folder}/${item}`, async (err2, stats) => {
        if (err2)
          throw err2;
        if (stats.isFile()) {
          fileListTotal.push(stats.size);
          checkEnd();
        } else if (stats.isDirectory()) {
          recursiveDirectory(`${folder}/${item}/`, checkEnd);
        }
      });
    });
    files.length === 0 && callback();
  });
}
function sum(arr) {
  return arr.reduce((t, c) => {
    return t + c;
  }, 0);
}
function formatBytes(a, b) {
  if (a === 0)
    return "0 Bytes";
  const c = 1024;
  const d = b || 2;
  const e = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
  const f = Math.floor(Math.log(a) / Math.log(c));
  return `${Number.parseFloat((a / c ** f).toFixed(d))} ${e[f]}`;
}
function viteBuildInfo(name) {
  let config;
  let startTime;
  let endTime;
  return {
    name: "vite:buildInfo",
    configResolved(resolvedConfig) {
      config = resolvedConfig;
    },
    buildStart() {
      console.log(
        bold(
          green(
            `\u{1F44F}\u6B22\u8FCE\u4F7F\u7528${blue(`[${name}]`)}\uFF0C\u73B0\u5728\u6B63\u5168\u529B\u4E3A\u60A8${config.command === "build" ? "\u6253\u5305" : "\u7F16\u8BD1"}`
          )
        )
      );
      if (config.command === "build")
        startTime = dayjs(/* @__PURE__ */ new Date());
    },
    closeBundle() {
      if (config.command === "build") {
        endTime = dayjs(/* @__PURE__ */ new Date());
        recursiveDirectory(config.build.outDir, () => {
          console.log(
            bold(
              green(
                `\u606D\u559C\u6253\u5305\u5B8C\u6210\u{1F389}\uFF08\u603B\u7528\u65F6${dayjs.duration(endTime.diff(startTime)).format("mm\u5206ss\u79D2")}\uFF0C\u6253\u5305\u540E\u7684\u5927\u5C0F\u4E3A${formatBytes(
                  sum(fileListTotal)
                )}\uFF09`
              )
            )
          );
        });
      }
    }
  };
}

// plugins/index.ts
function createVitePlugins(env) {
  const vitePluginList = [
    vue(),
    vueJsx(),
    VitePluginPreloadAll(),
    AutoImport({
      imports: [
        "vue",
        "vue-router",
        "vue-i18n",
        "@vueuse/core",
        "pinia"
      ],
      dts: "types/auto-imports.d.ts",
      dirs: ["src/stores", "src/composables"]
    }),
    Components({
      resolvers: [AntdvResolver()],
      dts: "types/components.d.ts",
      dirs: ["src/components"]
    }),
    // https://github.com/kirklin/unplugin-config
    GenerateConfig({
      appName: env.VITE_GLOB_APP_TITLE,
      configFile: {
        generate: true,
        fileName: GLOB_CONFIG_FILE_NAME,
        outputDir: OUTPUT_DIR
      },
      envVariables: {
        prefix: "VITE_GLOB_"
      }
    }),
    Unocss(),
    viteBuildInfo(env.VITE_APP_NAME)
  ];
  return vitePluginList;
}

// vite.config.ts
var __vite_injected_original_import_meta_url = "file:///D:/work/vs_program/antdv-pro-main/vite.config.ts";
var baseSrc = fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url));
var vite_config_default = ({ mode }) => {
  const env = loadEnv(mode, process.cwd());
  const proxyObj = {};
  if (mode === "development" && env.VITE_APP_BASE_API_DEV && env.VITE_APP_BASE_URL_DEV) {
    proxyObj[env.VITE_APP_BASE_API_DEV] = {
      target: env.VITE_APP_BASE_URL_DEV,
      changeOrigin: true,
      rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_BASE_API_DEV}`), "")
    };
  }
  return {
    plugins: createVitePlugins(env),
    resolve: {
      alias: [
        {
          find: "dayjs",
          replacement: "dayjs/esm"
        },
        {
          find: /^dayjs\/locale/,
          replacement: "dayjs/esm/locale"
        },
        {
          find: /^dayjs\/plugin/,
          replacement: "dayjs/esm/plugin"
        },
        {
          find: "vue-i18n",
          replacement: mode === "development" ? "vue-i18n/dist/vue-i18n.esm-browser.js" : "vue-i18n/dist/vue-i18n.esm-bundler.js"
        },
        {
          find: /^ant-design-vue\/es$/,
          replacement: "ant-design-vue/es"
        },
        {
          find: /^ant-design-vue\/dist$/,
          replacement: "ant-design-vue/dist"
        },
        {
          find: /^ant-design-vue\/lib$/,
          replacement: "ant-design-vue/es"
        },
        {
          find: /^ant-design-vue$/,
          replacement: "ant-design-vue/es"
        },
        {
          find: "lodash",
          replacement: "lodash-es"
        },
        {
          find: "~@",
          replacement: baseSrc
        },
        {
          find: "~",
          replacement: baseSrc
        },
        {
          find: "@",
          replacement: baseSrc
        },
        {
          find: "~#",
          replacement: resolve(baseSrc, "./enums")
        }
      ],
      extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json"]
    },
    build: {
      chunkSizeWarningLimit: 4096,
      outDir: OUTPUT_DIR,
      rollupOptions: {
        output: {
          manualChunks: {
            vue: ["vue", "vue-router", "pinia", "vue-i18n", "@vueuse/core"],
            antd: ["ant-design-vue", "@ant-design/icons-vue", "dayjs"]
            // lodash: ['loadsh-es'],
          }
        }
      }
    },
    server: {
      port: 6678,
      host: "0.0.0.0",
      proxy: {
        ...proxyObj
        // [env.VITE_APP_BASE_API]: {
        //   target: env.VITE_APP_BASE_URL,
        // //   如果你是https接口，需要配置这个参数
        // //   secure: false,
        //   changeOrigin: true,
        //   rewrite: path => path.replace(new RegExp(`^${env.VITE_APP_BASE_API}`), ''),
        // },
      }
    },
    test: {
      globals: true,
      environment: "jsdom"
    }
  };
};
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAicGx1Z2lucy9pbmRleC50cyIsICJwbHVnaW5zL2NvbnN0YW50cy50cyIsICJwbHVnaW5zL3ZpdGUtYnVpbGQtaW5mby50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHdvcmtcXFxcdnNfcHJvZ3JhbVxcXFxhbnRkdi1wcm8tbWFpblwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcd29ya1xcXFx2c19wcm9ncmFtXFxcXGFudGR2LXByby1tYWluXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi93b3JrL3ZzX3Byb2dyYW0vYW50ZHYtcHJvLW1haW4vdml0ZS5jb25maWcudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnXG5pbXBvcnQgdHlwZSB7IENvbmZpZ0VudiwgVXNlckNvbmZpZyB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgeyBsb2FkRW52IH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IGNyZWF0ZVZpdGVQbHVnaW5zIH0gZnJvbSAnLi9wbHVnaW5zJ1xuaW1wb3J0IHsgT1VUUFVUX0RJUiB9IGZyb20gJy4vcGx1Z2lucy9jb25zdGFudHMnXG5cbmNvbnN0IGJhc2VTcmMgPSBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjJywgaW1wb3J0Lm1ldGEudXJsKSlcbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCAoeyBtb2RlIH06IENvbmZpZ0Vudik6IFVzZXJDb25maWcgPT4ge1xuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCkpXG4gIGNvbnN0IHByb3h5T2JqID0ge31cbiAgaWYgKG1vZGUgPT09ICdkZXZlbG9wbWVudCcgJiYgZW52LlZJVEVfQVBQX0JBU0VfQVBJX0RFViAmJiBlbnYuVklURV9BUFBfQkFTRV9VUkxfREVWKSB7XG4gICAgcHJveHlPYmpbZW52LlZJVEVfQVBQX0JBU0VfQVBJX0RFVl0gPSB7XG4gICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQUF9CQVNFX1VSTF9ERVYsXG4gICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICByZXdyaXRlOiBwYXRoID0+IHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtlbnYuVklURV9BUFBfQkFTRV9BUElfREVWfWApLCAnJyksXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcGx1Z2luczogY3JlYXRlVml0ZVBsdWdpbnMoZW52KSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmluZDogJ2RheWpzJyxcbiAgICAgICAgICByZXBsYWNlbWVudDogJ2RheWpzL2VzbScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaW5kOiAvXmRheWpzXFwvbG9jYWxlLyxcbiAgICAgICAgICByZXBsYWNlbWVudDogJ2RheWpzL2VzbS9sb2NhbGUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmluZDogL15kYXlqc1xcL3BsdWdpbi8sXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6ICdkYXlqcy9lc20vcGx1Z2luJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZpbmQ6ICd2dWUtaTE4bicsXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6IG1vZGUgPT09ICdkZXZlbG9wbWVudCcgPyAndnVlLWkxOG4vZGlzdC92dWUtaTE4bi5lc20tYnJvd3Nlci5qcycgOiAndnVlLWkxOG4vZGlzdC92dWUtaTE4bi5lc20tYnVuZGxlci5qcycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaW5kOiAvXmFudC1kZXNpZ24tdnVlXFwvZXMkLyxcbiAgICAgICAgICByZXBsYWNlbWVudDogJ2FudC1kZXNpZ24tdnVlL2VzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZpbmQ6IC9eYW50LWRlc2lnbi12dWVcXC9kaXN0JC8sXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6ICdhbnQtZGVzaWduLXZ1ZS9kaXN0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZpbmQ6IC9eYW50LWRlc2lnbi12dWVcXC9saWIkLyxcbiAgICAgICAgICByZXBsYWNlbWVudDogJ2FudC1kZXNpZ24tdnVlL2VzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZpbmQ6IC9eYW50LWRlc2lnbi12dWUkLyxcbiAgICAgICAgICByZXBsYWNlbWVudDogJ2FudC1kZXNpZ24tdnVlL2VzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZpbmQ6ICdsb2Rhc2gnLFxuICAgICAgICAgIHJlcGxhY2VtZW50OiAnbG9kYXNoLWVzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZpbmQ6ICd+QCcsXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6IGJhc2VTcmMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaW5kOiAnficsXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6IGJhc2VTcmMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaW5kOiAnQCcsXG4gICAgICAgICAgcmVwbGFjZW1lbnQ6IGJhc2VTcmMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaW5kOiAnfiMnLFxuICAgICAgICAgIHJlcGxhY2VtZW50OiByZXNvbHZlKGJhc2VTcmMsICcuL2VudW1zJyksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZXh0ZW5zaW9uczpbXCIubWpzXCIsXCIuanNcIixcIi50c1wiLFwiLmpzeFwiLFwiLnRzeFwiLFwiLmpzb25cIl1cbiAgICB9LFxuICAgIGJ1aWxkOiB7XG4gICAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IDQwOTYsXG4gICAgICBvdXREaXI6IE9VVFBVVF9ESVIsXG4gICAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICAgIG91dHB1dDoge1xuICAgICAgICAgIG1hbnVhbENodW5rczoge1xuICAgICAgICAgICAgdnVlOiBbJ3Z1ZScsICd2dWUtcm91dGVyJywgJ3BpbmlhJywgJ3Z1ZS1pMThuJywgJ0B2dWV1c2UvY29yZSddLFxuICAgICAgICAgICAgYW50ZDogWydhbnQtZGVzaWduLXZ1ZScsICdAYW50LWRlc2lnbi9pY29ucy12dWUnLCAnZGF5anMnXSxcbiAgICAgICAgICAgIC8vIGxvZGFzaDogWydsb2Fkc2gtZXMnXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHNlcnZlcjoge1xuICAgICAgcG9ydDogNjY3OCxcbiAgICAgIGhvc3Q6ICcwLjAuMC4wJyxcbiAgICAgIHByb3h5OiB7XG4gICAgICAgIC4uLnByb3h5T2JqLFxuICAgICAgICAvLyBbZW52LlZJVEVfQVBQX0JBU0VfQVBJXToge1xuICAgICAgICAvLyAgIHRhcmdldDogZW52LlZJVEVfQVBQX0JBU0VfVVJMLFxuICAgICAgICAvLyAvLyAgIFx1NTk4Mlx1Njc5Q1x1NEY2MFx1NjYyRmh0dHBzXHU2M0E1XHU1M0UzXHVGRjBDXHU5NzAwXHU4OTgxXHU5MTREXHU3RjZFXHU4RkQ5XHU0RTJBXHU1M0MyXHU2NTcwXG4gICAgICAgIC8vIC8vICAgc2VjdXJlOiBmYWxzZSxcbiAgICAgICAgLy8gICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgIC8vICAgcmV3cml0ZTogcGF0aCA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7ZW52LlZJVEVfQVBQX0JBU0VfQVBJfWApLCAnJyksXG4gICAgICAgIC8vIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgdGVzdDoge1xuICAgICAgZ2xvYmFsczogdHJ1ZSxcbiAgICAgIGVudmlyb25tZW50OiAnanNkb20nLFxuICAgIH0sXG4gIH1cbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcd29ya1xcXFx2c19wcm9ncmFtXFxcXGFudGR2LXByby1tYWluXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHdvcmtcXFxcdnNfcHJvZ3JhbVxcXFxhbnRkdi1wcm8tbWFpblxcXFxwbHVnaW5zXFxcXGluZGV4LnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi93b3JrL3ZzX3Byb2dyYW0vYW50ZHYtcHJvLW1haW4vcGx1Z2lucy9pbmRleC50c1wiO2ltcG9ydCB0eXBlIHsgUGx1Z2luT3B0aW9uIH0gZnJvbSAndml0ZSdcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xuaW1wb3J0IHZ1ZUpzeCBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUtanN4J1xuaW1wb3J0IEF1dG9JbXBvcnQgZnJvbSAndW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZSdcbmltcG9ydCBHZW5lcmF0ZUNvbmZpZyBmcm9tICd1bnBsdWdpbi1jb25maWcvdml0ZSdcbmltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnXG5pbXBvcnQgVml0ZVBsdWdpblByZWxvYWRBbGwgZnJvbSAnQG1pc3Rqcy92aXRlLXBsdWdpbi1wcmVsb2FkJ1xuaW1wb3J0IFVub2NzcyBmcm9tICd1bm9jc3Mvdml0ZSdcbmltcG9ydCBBbnRkdlJlc29sdmVyIGZyb20gJ2FudGR2LWNvbXBvbmVudC1yZXNvbHZlcidcbmltcG9ydCB7IEdMT0JfQ09ORklHX0ZJTEVfTkFNRSwgT1VUUFVUX0RJUiB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgdml0ZUJ1aWxkSW5mbyB9IGZyb20gJy4vdml0ZS1idWlsZC1pbmZvJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVml0ZVBsdWdpbnMoZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIGNvbnN0IHZpdGVQbHVnaW5MaXN0OiAoUGx1Z2luT3B0aW9uIHwgUGx1Z2luT3B0aW9uW10pW10gPSBbXG4gICAgdnVlKCksXG4gICAgdnVlSnN4KCksXG4gICAgVml0ZVBsdWdpblByZWxvYWRBbGwoKSxcbiAgICBBdXRvSW1wb3J0KHtcbiAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgJ3Z1ZScsXG4gICAgICAgICd2dWUtcm91dGVyJyxcbiAgICAgICAgJ3Z1ZS1pMThuJyxcbiAgICAgICAgJ0B2dWV1c2UvY29yZScsXG4gICAgICAgICdwaW5pYScsXG4gICAgICBdLFxuICAgICAgZHRzOiAndHlwZXMvYXV0by1pbXBvcnRzLmQudHMnLFxuICAgICAgZGlyczogWydzcmMvc3RvcmVzJywgJ3NyYy9jb21wb3NhYmxlcyddLFxuICAgIH0pLFxuICAgIENvbXBvbmVudHMoe1xuICAgICAgcmVzb2x2ZXJzOiBbQW50ZHZSZXNvbHZlcigpXSxcbiAgICAgIGR0czogJ3R5cGVzL2NvbXBvbmVudHMuZC50cycsXG4gICAgICBkaXJzOiBbJ3NyYy9jb21wb25lbnRzJ10sXG4gICAgfSksXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2tpcmtsaW4vdW5wbHVnaW4tY29uZmlnXG4gICAgR2VuZXJhdGVDb25maWcoe1xuICAgICAgYXBwTmFtZTogZW52LlZJVEVfR0xPQl9BUFBfVElUTEUsXG4gICAgICBjb25maWdGaWxlOiB7XG4gICAgICAgIGdlbmVyYXRlOiB0cnVlLFxuICAgICAgICBmaWxlTmFtZTogR0xPQl9DT05GSUdfRklMRV9OQU1FLFxuICAgICAgICBvdXRwdXREaXI6IE9VVFBVVF9ESVIsXG4gICAgICB9LFxuICAgICAgZW52VmFyaWFibGVzOiB7XG4gICAgICAgIHByZWZpeDogJ1ZJVEVfR0xPQl8nLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBVbm9jc3MoKSxcbiAgICB2aXRlQnVpbGRJbmZvKGVudi5WSVRFX0FQUF9OQU1FKSxcbiAgXVxuICByZXR1cm4gdml0ZVBsdWdpbkxpc3Rcbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcd29ya1xcXFx2c19wcm9ncmFtXFxcXGFudGR2LXByby1tYWluXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHdvcmtcXFxcdnNfcHJvZ3JhbVxcXFxhbnRkdi1wcm8tbWFpblxcXFxwbHVnaW5zXFxcXGNvbnN0YW50cy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovd29yay92c19wcm9ncmFtL2FudGR2LXByby1tYWluL3BsdWdpbnMvY29uc3RhbnRzLnRzXCI7Ly8gVGhpcyBjb25zdGFudCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBHTE9CX0NPTkZJR19GSUxFX05BTUUgPSAnX2FwcC5jb25maWcuanMnXG5cbi8vIFRoaXMgY29uc3RhbnQgc2V0cyB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIFZpdGUgcGFja2FnZVxuZXhwb3J0IGNvbnN0IE9VVFBVVF9ESVIgPSAnZGlzdCdcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcd29ya1xcXFx2c19wcm9ncmFtXFxcXGFudGR2LXByby1tYWluXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHdvcmtcXFxcdnNfcHJvZ3JhbVxcXFxhbnRkdi1wcm8tbWFpblxcXFxwbHVnaW5zXFxcXHZpdGUtYnVpbGQtaW5mby50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovd29yay92c19wcm9ncmFtL2FudGR2LXByby1tYWluL3BsdWdpbnMvdml0ZS1idWlsZC1pbmZvLnRzXCI7aW1wb3J0IHsgcmVhZGRpciwgc3RhdCB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgUmVzb2x2ZWRDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJ1xuaW1wb3J0IHR5cGUgeyBEYXlqcyB9IGZyb20gJ2RheWpzJ1xuaW1wb3J0IGR1cmF0aW9uIGZyb20gJ2RheWpzL3BsdWdpbi9kdXJhdGlvbidcbmltcG9ydCBwa2cgZnJvbSAncGljb2NvbG9ycydcblxuY29uc3QgeyBncmVlbiwgYmx1ZSwgYm9sZCB9ID0gcGtnXG5kYXlqcy5leHRlbmQoZHVyYXRpb24pXG5cbmNvbnN0IGZpbGVMaXN0VG90YWw6IG51bWJlcltdID0gW11cblxuZnVuY3Rpb24gcmVjdXJzaXZlRGlyZWN0b3J5KGZvbGRlcjogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgcmVhZGRpcihmb2xkZXIsIChlcnIsIGZpbGVzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChlcnIpXG4gICAgICB0aHJvdyBlcnJcbiAgICBsZXQgY291bnQgPSAwXG4gICAgY29uc3QgY2hlY2tFbmQgPSAoKSA9PiB7XG4gICAgICArK2NvdW50ID09PSBmaWxlcy5sZW5ndGggJiYgY2FsbGJhY2soKVxuICAgIH1cbiAgICBmaWxlcy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcbiAgICAgIHN0YXQoYCR7Zm9sZGVyfS8ke2l0ZW19YCwgYXN5bmMgKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgaWYgKGVycilcbiAgICAgICAgICB0aHJvdyBlcnJcbiAgICAgICAgaWYgKHN0YXRzLmlzRmlsZSgpKSB7XG4gICAgICAgICAgZmlsZUxpc3RUb3RhbC5wdXNoKHN0YXRzLnNpemUpXG4gICAgICAgICAgY2hlY2tFbmQoKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICByZWN1cnNpdmVEaXJlY3RvcnkoYCR7Zm9sZGVyfS8ke2l0ZW19L2AsIGNoZWNrRW5kKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gICAgZmlsZXMubGVuZ3RoID09PSAwICYmIGNhbGxiYWNrKClcbiAgfSlcbn1cblxuZnVuY3Rpb24gc3VtKGFycjogbnVtYmVyW10pIHtcbiAgcmV0dXJuIGFyci5yZWR1Y2UoKHQ6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIHQgKyBjXG4gIH0sIDApXG59XG5mdW5jdGlvbiBmb3JtYXRCeXRlcyhhOiBudW1iZXIsIGI/OiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoYSA9PT0gMClcbiAgICByZXR1cm4gJzAgQnl0ZXMnXG4gIGNvbnN0IGMgPSAxMDI0XG4gIGNvbnN0IGQgPSBiIHx8IDJcbiAgY29uc3QgZSA9IFsnQnl0ZXMnLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXVxuICBjb25zdCBmID0gTWF0aC5mbG9vcihNYXRoLmxvZyhhKSAvIE1hdGgubG9nKGMpKVxuICByZXR1cm4gYCR7TnVtYmVyLnBhcnNlRmxvYXQoKGEgLyBjICoqIGYpLnRvRml4ZWQoZCkpfSAke2VbZl19YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdml0ZUJ1aWxkSW5mbyhuYW1lOiBzdHJpbmcpOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZ1xuICBsZXQgc3RhcnRUaW1lOiBEYXlqc1xuICBsZXQgZW5kVGltZTogRGF5anNcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZTpidWlsZEluZm8nLFxuICAgIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnKSB7XG4gICAgICBjb25maWcgPSByZXNvbHZlZENvbmZpZ1xuICAgIH0sXG4gICAgYnVpbGRTdGFydCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBib2xkKFxuICAgICAgICAgIGdyZWVuKFxuICAgICAgICAgICAgYFx1RDgzRFx1REM0Rlx1NkIyMlx1OEZDRVx1NEY3Rlx1NzUyOCR7Ymx1ZShgWyR7bmFtZX1dYCl9XHVGRjBDXHU3M0IwXHU1NzI4XHU2QjYzXHU1MTY4XHU1MjlCXHU0RTNBXHU2MEE4JHtjb25maWcuY29tbWFuZCA9PT0gJ2J1aWxkJyA/ICdcdTYyNTNcdTUzMDUnIDogJ1x1N0YxNlx1OEJEMSdcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApXG4gICAgICBpZiAoY29uZmlnLmNvbW1hbmQgPT09ICdidWlsZCcpXG4gICAgICAgIHN0YXJ0VGltZSA9IGRheWpzKG5ldyBEYXRlKCkpXG4gICAgfSxcbiAgICBjbG9zZUJ1bmRsZSgpIHtcbiAgICAgIGlmIChjb25maWcuY29tbWFuZCA9PT0gJ2J1aWxkJykge1xuICAgICAgICBlbmRUaW1lID0gZGF5anMobmV3IERhdGUoKSlcbiAgICAgICAgcmVjdXJzaXZlRGlyZWN0b3J5KGNvbmZpZy5idWlsZC5vdXREaXIsICgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGJvbGQoXG4gICAgICAgICAgICAgIGdyZWVuKFxuICAgICAgICAgICAgICAgIGBcdTYwNkRcdTU1OUNcdTYyNTNcdTUzMDVcdTVCOENcdTYyMTBcdUQ4M0NcdURGODlcdUZGMDhcdTYwM0JcdTc1MjhcdTY1RjYke2RheWpzXG4gICAgICAgICAgICAgICAgICAuZHVyYXRpb24oZW5kVGltZS5kaWZmKHN0YXJ0VGltZSkpXG4gICAgICAgICAgICAgICAgICAuZm9ybWF0KCdtbVx1NTIwNnNzXHU3OUQyJyl9XHVGRjBDXHU2MjUzXHU1MzA1XHU1NDBFXHU3Njg0XHU1OTI3XHU1QzBGXHU0RTNBJHtmb3JtYXRCeXRlcyhcbiAgICAgICAgICAgICAgICAgICAgc3VtKGZpbGVMaXN0VG90YWwpLFxuICAgICAgICAgICAgICAgICAgKX1cdUZGMDlgLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVMsZUFBZTtBQUN4QixZQUFZLGFBQWE7QUFDekIsU0FBUyxxQkFBcUI7QUFFOUIsU0FBUyxlQUFlOzs7QUNKeEIsT0FBTyxTQUFTO0FBQ2hCLE9BQU8sWUFBWTtBQUNuQixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLG9CQUFvQjtBQUMzQixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLDBCQUEwQjtBQUNqQyxPQUFPLFlBQVk7QUFDbkIsT0FBTyxtQkFBbUI7OztBQ1BuQixJQUFNLHdCQUF3QjtBQUc5QixJQUFNLGFBQWE7OztBQ0pxUyxTQUFTLFNBQVMsWUFBWTtBQUU3VixPQUFPLFdBQVc7QUFFbEIsT0FBTyxjQUFjO0FBQ3JCLE9BQU8sU0FBUztBQUVoQixJQUFNLEVBQUUsT0FBTyxNQUFNLEtBQUssSUFBSTtBQUM5QixNQUFNLE9BQU8sUUFBUTtBQUVyQixJQUFNLGdCQUEwQixDQUFDO0FBRWpDLFNBQVMsbUJBQW1CLFFBQWdCLFVBQTBCO0FBQ3BFLFVBQVEsUUFBUSxDQUFDLEtBQUssVUFBb0I7QUFDeEMsUUFBSTtBQUNGLFlBQU07QUFDUixRQUFJLFFBQVE7QUFDWixVQUFNLFdBQVcsTUFBTTtBQUNyQixRQUFFLFVBQVUsTUFBTSxVQUFVLFNBQVM7QUFBQSxJQUN2QztBQUNBLFVBQU0sUUFBUSxDQUFDLFNBQWlCO0FBQzlCLFdBQUssR0FBRyxNQUFN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
